﻿<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>CodeMirror: APL mode</title>
    <link rel="stylesheet" href="../../doc/docs.css"> 
    <link rel="stylesheet" href="../../lib/codemirror.css"> 
    <script src="../../lib/codemirror.js"></script>
    <script src="../../addon/edit/matchbrackets.js"></script>
    <script src="./apl.js"></script>
    <style>
	.CodeMirror { border: 2px inset #dee; }
    </style>
  </head>
  <body>
    <h1>CodeMirror: APL mode</h1>

<form><textarea id="code" name="code">
â Conway's game of life

â This example was inspired by the impressive demo at
â http://www.youtube.com/watch?v=a9xAKttWgP4

â Create a matrix:
â     0 1 1
â     1 1 0
â     0 1 0
creature â† (3 3 â´ â³ 9) âˆˆ 1 2 3 4 7   â Original creature from demo
creature â† (3 3 â´ â³ 9) âˆˆ 1 3 6 7 8   â Glider

â Place the creature on a larger board, near the centre
board â† Â¯1 âŠ– Â¯2 âŒ½ 5 7 â†‘ creature

â A function to move from one generation to the next
life â† {âˆ¨/ 1 âµ âˆ§ 3 4 = âŠ‚+/ +âŒ¿ 1 0 Â¯1 âˆ˜.âŠ– 1 0 Â¯1 âŒ½Â¨ âŠ‚âµ}

â Compute n-th generation and format it as a
â character matrix
gen â† {' #'[(life â£ âµ) board]}

â Show first three generations
(gen 1) (gen 2) (gen 3)
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/apl"
      });
    </script>

    <p>Simple mode that tries to handle APL as well as it can.</p>
    <p>It attempts to label functions/operators based upon
    monadic/dyadic usage (but this is far from fully fleshed out).
    This means there are meaningful classnames so hover states can
    have popups etc.</p>

    <p><strong>MIME types defined:</strong> <code>text/apl</code> (APL code)</p>
  </body>
</html>
